const { NotFoundError,BadRequestError,UnauthorizedError } = require("./errors.js") 

// 响应成功的方法
function success(res,message,data,code=200){
    res.status(code).json({
        status:true,
        message,
        data
    })
}

// 响应失败的方法
function failure(res,error){
    if(error.name === 'SequelizeValidationError'){
        // 将错误信息都保存在一个数组中
        const errors = error.errors.map(e=>e.message)
        // 400的含义是请求中存在错误语法
        return res.status(400).json({
            status:false,
            message:'请求参数有误',
            errors
        })
    }

    if(error.name === 'NotFoundError'){
        return res.status(404).json({
            status:false,
            message:'资源不存在',
            errors:[error.message]//防止出现多错误，使用数组
        })
    }

    if(error.name === 'BadRequestError'){
        return res.status(400).json({
            status:false,
            message:'请求参数错误',
            errors:[error.message]//防止出现多错误，使用数组
        })
    }

    if(error.name === 'UnauthorizedError'){
        return res.status(404).json({
            status:false,
            message:'认证失败',
            errors:[error.message]
        })
    }

    if(error.name === 'TokenExpiredError'){
        return res.status(401).json({
            status:false,
            message:'认证失败',
            errors:['您的token已过期，请重新验证']
        })
    }

    if(error.name === 'JsonWebTokenError'){
        return res.status(401).json({
            status:false,
            message:'认证失败',
            errors:['您的token错误']
        })
    }

    res.status(500).json({
        status:false,
        message:'服务器错误',
        errors:[error.message]
    })
}

module.exports = {
    NotFoundError,
    success,
    failure
}